package 初级.罗马数字转整数;

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.romanToInt("MCMXCIV"));
    }
    public int romanToInt(String s) {
        int res=0;
        int temp=getInt(s.charAt(0));//临时变量,初始化为第一个
        int next=0;//下一个

        //从第1个开始遍历，判断下一个是否比这个小，如果小，则相加，大则把当前数置为-，最后一个相加
        for (int i = 0; i < s.length(); i++) {
            //转下一个数字
            if (i==s.length()-1) return res+=temp;

            next=getInt(s.charAt(i+1));//获取下一个字符的值
            if (temp>=next){
                res+=temp;
            }else {
                res+=(-temp);
            }
            //然后把下一个作为当前，继续循环
            temp=next;
        }
        return res;
    }

    //根据字符转成对应数字
    public  int getInt(char c){
        switch (c){
            case 'I': return 1;
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
        }
        return 0;
    }
}
